iT邦幫忙

0

(筆記D1) Spring MVC 框架

  • 分享至 

  • xImage
  •  

1-1 Spring MVC 特質

  • 功能建構在 Servlet、JSP 規格基礎上面發展,必須透過 Web Container 的支援才能執行。
    <Web Container : 類似tomcat裡的web容器, 提供JRE執行環境>

  • Spring Web MVC 實作 Front Controller Design Pattern (集中管理), 連近來都透過 IOC 機制, 將 Model、 Controller、View 之間關係分開, 降低耦合方便日後更換 Model、Controller、View 元件, 好維護。
    <IOC 控制反轉 (Inversion of Control): 是一種設計原則, 藉由 『分離組件 (Components) 的設置與使用』, 來降低類別或模組之間的耦合度 (i.e., 解耦)>

  • Spring Web MVC 將Web應用程式連接View元件與Controller元件程式碼( View 呼叫 Controller(request)、 Controller 導向 View(response)) 兩種方式切開, Spring 提供制式化實作, 讓設計師專注於邏輯。

https://ithelp.ithome.com.tw/upload/images/20210924/20142439oZHlp40WyL.jpg

1-2 Spring MVC 與傳統 MVC 架構差異
Web 應用程式的 Model 2 架構 : GUI MVC Design Pattern 的變形

  • View : JSP 實作、負責畫面顯示、提供 HTML From、產生HTTP Response (回應資料畫面)。
  • Controller : Servlet 實作、負責 Model 元件與 View 元件之間互動關係。
  • Model : JavaBeans 實作、負責程式資料存取與邏輯。
    Model 1 與 Model 2 差在 Controller : JSP 實作

         Web 應用程式的 Model 2 架構圖 : 
       Controller 負責處理 user 請求
                ▼ 根據商業邏輯找到, 需要的 Model
       Model 跟資料庫存取相關的資料
                ▼ 找到資料後, 告訴 Controller 呼叫適當的 View
       View 接收 Controller 和 Model 的資訊產生所需的畫面            

https://ithelp.ithome.com.tw/upload/images/20210927/20142439vGcZmRTdIG.png

優點 : 處理 HTTP Request 的程式依功能分3部分(MVC),撰寫其中任一部份時不需考慮其他 部分要怎麼配合。
缺點 : 將 Web 元件依照 Model、View、Controller 的不同功能分開, 通常容易放錯位置。

訪間有各種不同的 Framework 能幫助我們避免這些錯誤
這邊要介紹的是 Spring Web MVC Fromework

1-3 Spring Web MVC 的主要組成元件 :

Dispatcher Servlet : 負責 HTTP Request 並導向對應的 Controller 元件。
<所有的請求都要經過它>

Hander Mapping : 紀錄 HTTP Request 與 Controller 元件之間的對應關係。<幫助 HTTP Request 找到對應的 Controller 元件>

Controller : 處理 HTTP Request 和 HTTP Response 元件。<可像 HTTP Servlet 一樣取得, HttpServletRequest 與 HttpServletResponse 物件使用>

Model And View : 提供 Model 與 View 元件相關資料讓 Dispatcher Servlet 使用。<2者之間傳遞資料, Model 抓到資料後 傳到指定的 View 顯示>

View Resolver : 紀錄 View 元件邏輯名稱與 View 元件實際 URL 之間對應關係。<讓 Controller 元件使用邏輯名稱呼叫 View>

View : 負責顯示 Request 後的畫面, Spring Web MVC 支援 JSP、JSTL、XSLT、PDF等格式。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言